<%@page import="java.util.Collections"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<%@page import="util.*"%>
<%@page import="entidades.*"%>
<%@page import="java.util.Map"%>
<%@page import="java.util.List"%>
<%@page import="java.util.Date"%>
<%@page import="java.util.HashMap"%>
<%@page import="java.util.LinkedList"%>
<%@page import="java.text.SimpleDateFormat"%>
<%@page import="java.text.DecimalFormat"%>
<%@page import="java.util.ArrayList"%>
<%@page import="comparator.ComparatorFechaInicioUteco"%>
<%@page import="comparator.ComparatorNumeroCiclo"%>
<%@page import="java.util.GregorianCalendar"%>
<%@page import="java.util.Calendar"%>

<html>
<head>

<%@ include file="jspf/head.jspf" %>

<script type="text/javascript" src="js/ListaOT.js"></script>
<script type="text/javascript" src="js/sp/planificacion-uteco.js"></script>
<link rel="stylesheet" type="text/css" href="css/lista-ordenes.css"/>

</head>
<body>

<%@ include file="jspf/header.jspf" %>

<%
String accion = (request.getParameter("accion") != null)? request.getParameter("accion") : "";
String accionBis = (request.getParameter("accion_bis") != null)? request.getParameter("accion_bis") : "";
int uteco = 0;
int pais = 0;
try{ uteco = Integer.parseInt(request.getParameter("f-uteco")); }catch(Exception e) {}
try{ pais = Integer.parseInt(request.getParameter("f-pais")); }catch(Exception e) {}

Date fecha1 = Util.parseDate(request.getParameter("f-fecha1"));
if(fecha1 == null && accion.compareTo("filtrar") != 0)
		{
		fecha1 = new Date();
                }
GregorianCalendar calendar = (GregorianCalendar)GregorianCalendar.getInstance();
calendar.setTime(fecha1);
calendar.setFirstDayOfWeek(Calendar.SUNDAY);
Date primerDia = CicloUteco.getPrimerDiaSemana(calendar);
Date ultimoDia = CicloUteco.getUltimoDiaSemana(calendar);
calendar.setTime(ultimoDia);
calendar.set(Calendar.HOUR_OF_DAY,23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 59);
calendar.set(Calendar.MILLISECOND, 999);
ultimoDia = calendar.getTime();
Boolean[] impresion = new Boolean[3];
Boolean[] confeccion = new Boolean[3];
if(accion.compareTo("filtro") != 0)
	{
	impresion[0] = true;
	impresion[1] = true;
	impresion[2] = true;
	confeccion[0] = true;
	confeccion[1] = true;
	confeccion[2] = true;
	}
else
	{
	for(int i=0; i<3; i++) { 
                        impresion[i] = request.getParameter("impresion" + (i + 1)) != null;
                        }
	for(int i=0; i<3; i++) { 
                        confeccion[i] = request.getParameter("confeccion" + (i + 1)) != null;
            }
	}

// Verifico si debo reprogramar una orden.
if(accionBis.compareTo("reprogramar") == 0)
	{
	int ordenId = Util.parseInt(request.getParameter("orden_id"));
	int cicloId = Util.parseInt(request.getParameter("ciclo_nuevo"));

	if(ordenId > 0 && cicloId > 0)
		{
		OrdenTrabajo ot = new OrdenTrabajo(ordenId);
		ot.setCicloUtecoId(cicloId);
		ot.setCicloUtecoTurno(0);
		ot.guardar();
		}
	}

// Verifico si debo realizar el alta de una planificación.
if(accionBis.compareTo("planificar") == 0)
	{
	String ids = request.getParameter("ids");
	int cicloId = Util.parseInt(request.getParameter("ciclo_id"));
	boolean bloqueado = request.getParameter("bloqueado") != null;

	// Cargo el ciclo.
	CicloUteco ciclo = new CicloUteco(cicloId);
	ciclo.setBloqueado(bloqueado);
	ciclo.setPlanificado(true);
	ciclo.guardar();

	// Transfiero las órdenes de trabajo.
	if(ids != null && ids.length()>0)
		{
		String ordenes[] = ids.split(",");
		for(int i=0,n=ordenes.length; i<n; i++)
			{
			int ordenId, turno = 0;
			if(ordenes[i].contains(":"))
				{
				ordenId = Util.parseInt(ordenes[i].split(":")[0]);
				turno = Util.parseInt(ordenes[i].split(":")[1]) + 1;
				}
			else
				{ ordenId = Util.parseInt(ordenes[i]); }

			OrdenTrabajo.cambiarCicloUteco(ordenId, ciclo.getId(), turno>0? turno : null);
			}
		}
	}

if(accionBis.compareTo("Cambiar") == 0)
	{
        OrdenTrabajo ot = OrdenTrabajo.buscarById(request.getParameter("ot-id"));
        Integer id = Util.parseInt(request.getParameter("uteco"));
        String respuesta = request.getParameter("respuesta");
        Integer idUtecoDefault = Util.parseInt(request.getParameter("uteco-default"));
        CicloUteco cuNuevo = CicloUteco.listar(ot.getCicloUteco().getNumero(), id);

        if (cuNuevo != null){
            if (respuesta.equals("No")){
                OrdenTrabajo otNuevo = new OrdenTrabajo(ot.getId());
                otNuevo.setCicloUtecoId(cuNuevo.getId());
                otNuevo.setCicloUtecoTurno(0);
                otNuevo.setUtecoDefault(idUtecoDefault);
                otNuevo.guardar();
                }
            if (respuesta.equals("Si")){
                for(int i=0,n=ot.getOrdenVenta().getOrdenesTrabajo().size(); i<n; i++){
                    OrdenTrabajo otPariente = ot.getOrdenVenta().getOrdenesTrabajo().get(i);
                    OrdenTrabajo otNuevo = new OrdenTrabajo(otPariente.getId());
                    otNuevo.setUtecoDefault(otPariente.getCicloUteco().getUtecoId());
                    otNuevo.setCicloUtecoId(cuNuevo.getId());
                    otNuevo.setCicloUtecoTurno(0);
                    otNuevo.guardar();
                }
            }
        }

}

if(accionBis.compareTo("CambiarPariente") == 0)	{
        CicloUteco ciclo = CicloUteco.getUtecoByFechaConfeccion(fecha1, confeccion);
        OrdenTrabajo ot = OrdenTrabajo.buscarById(request.getParameter("ot-id"));
        Integer id = Util.parseInt(request.getParameter("uteco"));
        Integer idUtecoDefault = Util.parseInt(request.getParameter("uteco-default"));
        CicloUteco cicloNuevo = CicloUteco.listar(ciclo.getNumero(), id);
        OrdenTrabajo otNuevo = new OrdenTrabajo(ot.getId());
        otNuevo.setCicloUtecoId(cicloNuevo.getId());
        otNuevo.getCicloUteco().setUtecoId(id);
        otNuevo.setCicloUtecoTurno(0);
        otNuevo.setUtecoDefault(idUtecoDefault);
        otNuevo.guardar();
    }
String ids = "";
String idsOrdenes = "";
String idsPlanificados = "";
String idsParientes = "";
String idsParientesPlanificados = "";
%>

<br/>

<h1>Planificación</h1>

<br/>

<div id="div_ciclos">

<!-- Tabla de filtros -->
<form action="" method="get" id="form_filtros">
	<input type="hidden" name="accion" value="filtro"/>

	<center><table class="filtros">
		<tr>
			<td align="right">Fecha:</td>
			<td align="left">
				<input type="text" name="f-fecha1" class="fecha" size="11" value="<%= Util.format(fecha1, "dd/MM/yyyy") %>"/>
			</td>
		</tr>
		<tr>
			<td align="right" valign="top">Confección:</td>
			<td align="left" style="font-weight: normal;">
				<input type="checkbox" name="confeccion1" value="true" <%= confeccion[0]? "checked=\"checked\"" : "" %> /> Pendiente
				<br/><input type="checkbox" name="confeccion2" value="true" <%= confeccion[1]? "checked=\"checked\"" : "" %> /> Planificada
				<br/><input type="checkbox" name="confeccion3" value="true" <%= confeccion[2]? "checked=\"checked\"" : "" %> /> Terminada
			</td>
		</tr>
		<!--<tr>
			<td align="right">Uteco:</td>
			<td align="left">
				<select name="f-uteco">
					<option value="0">Todas</option>
					<% {
					List<Uteco> utecos = Uteco.listar();
					for(int i=0; i<utecos.size(); i++)
						{ %>
						<option value="<%= utecos.get(i).getId() %>" <%= (uteco == utecos.get(i).getId())? "selected" : "" %>><%= utecos.get(i).getDescripcion() %></option>
						<% }
					} %>
				</select>
			</td>
		</tr>-->
		<!--<tr>
			<td align="right">Pais:</td>
			<td align="left">
				<select name="f-pais">
					<option value="">Todos</option>
				<% {
				List<Pais> paises = Pais.listar();
				for(int p=0; p<paises.size(); p++)
					{%><option value="<%= paises.get(p).getId() %>" <%= (paises.get(p).getId() == pais)? "selected=\"selected\"" : "" %>><%= paises.get(p).getNombre() %></option><%}
				} %>
				</select>
			</td>
		</tr>-->
		<tr>
			<td colspan="2">
				<div style="float:left">
					<button name="exportar"><img src="icon/excel.png" alt="" title="Exportar"/> <span>Exportar</span></button>
				</div>
				<div style="float:right">
					<button name="buscar"><img src="icon/find.png" alt="" title="Buscar"/> <span>Buscar ciclos</span></button>
				</div>
				<div style="clear:both"></div>
			</td>
		</tr>
	</table>
       <button name="scada"><img src="icon/excel.png" alt="" title="Exportar a Scada"/> <span>Scada</span></button>
        </center>
</form>
 
<br/>
<center>
    <form action="" method="post" class="uteco" id="uteco_form">
    <table class="formulario" id="table_porcentaje">
	<tr id ="tr1" class="titulo">
		<td>Uteco</td>
		<td>%Disponible</td>
		<td>Metros Excedidos</td>
        </tr>

	<%
	CicloUteco cicloU = CicloUteco.getUtecoByFechaConfeccion(fecha1, confeccion);
        Map<Integer,Long> mapCapacidad = new HashMap<Integer,Long>();
        List<Uteco> utecos = Uteco.listar();
            if (cicloU.getId() != 0){
               List<CicloUteco> ciclosList = CicloUteco.listar(cicloU.getNumero());
                for(int i=0; i<ciclosList.size(); i++){
                    CicloUteco cu = ciclosList.get(i);
                      for(int j=0; j<utecos.size(); j++)
                        {
                          Uteco u = utecos.get(j);
                          long capacidad = cu.getCapacidad();
                          if (!mapCapacidad.containsKey(cu.getUteco().getId())){
                            mapCapacidad.put(cu.getUteco().getId(), capacidad);
                          }else{
                            mapCapacidad.put(cu.getUtecoId(), capacidad);
                          }
                      }
                }
                for(int i=0; i<utecos.size(); i++)
                    {
                    Uteco u = utecos.get(i);
                    DecimalFormat twoDForm = new DecimalFormat("#.##");
                    String strCap = "0";
                    double total = 0.00d;
                    double porc = 100d;
                    long cap = 0l;
                    long dif = 0l;
                    String signo = "-";
                    String porcStr = String.valueOf(twoDForm.format(porc));
                    if (mapCapacidad.containsKey(u.getId()) ){
                        cap = mapCapacidad.get(u.getId()) ;
                
                    }
                    %>
                  
                    <tr id="<%= u.getId() %>" class="editable">
                        <input type="hidden" name="cap_uteco_<%= u.getId() %>" value="<%= cap %>"/>
                        <input type="hidden" name="cap_hidden_<%= u.getId() %>" value="<%= cap %>"/>
                        <input type="hidden" name="cap_total_<%= u.getId() %>" value="<%= mapCapacidad.get(u.getId()) %>"/>
                        <td><%= u.getDescripcion() %></td>
                        <td>%<input type="text" name="porcentaje_<%= u.getId() %>" size="5" readonly="readonly" value="<%= porcStr %>" /></td>
                        <td><input type="text" name="signo_<%= u.getId() %>" size="1" readonly="readonly" value="<%= signo %>" style="text-align: right; " />
                        <input type="text" name="capacidad_<%= u.getId() %>" size="5" readonly="readonly" value="<%= cap %>" /></td>
                        </tr>
                    <%
                }
                 %>
                
                <%} %>
                  
         </table>
    </form>
</center>


<!-- Tabla con los resultados separados por Newlong -->
<center><table id ="hola">
	<tr id="tr">
            <td id ="td" style="vertical-align: top">
            <%{

                Map<Integer, CicloUteco> mapCiClosRepetidos = new HashMap<Integer,CicloUteco>();
                List<CicloUteco> ciclos = CicloUteco.getCicloUtecoByFechaConfeccion(fecha1, confeccion);
                CicloNewlong cicloNewlong = CicloNewlong.getCicloNewLongByFecha(fecha1);
                int i =0;
                for (int j=0; j<ciclos.size(); j++){
                    CicloUteco ciclo  = ciclos.get(j);
                if ( ciclo.getId() != 0 && !mapCiClosRepetidos.containsKey(ciclo.getNumero())){
                     mapCiClosRepetidos.put(ciclo.getNumero() , ciclo);
                    %>
                    <form action="" method="post" class="uteco" id="form_uteco_<%= ciclo.getId() %>">
                        <input type="hidden"  name="ot-id" value=""/>
                        <input type="hidden"  name="uteco" value="<%= ciclo.getId() %>"/>
                        <input type="hidden" name="accion_bis" value="Cambiar"/>
                        <input type="hidden"  name="uteco-default" value=""/>
                        <input type="hidden"  name="respuesta" value=""/>
                        <input type="hidden"  name="cicloActual" value="Si"/>
                        <input type="hidden"  name="numero" value="<%= ciclo.getNumero() %>"/>
                    <%
                    Map<Integer,String> mapCiclos = new HashMap<Integer,String>();
                    List<OrdenTrabajo> ordenesTotales = new ArrayList<OrdenTrabajo>();
                    Map<String, OrdenTrabajo> mapOrdenTrabajo = new HashMap<String, OrdenTrabajo>();
                    boolean titulos = false;
                    if (i == 0){
                    %>
                    <center>
                    <table class="planificacion">
                        <tr>
				<td align="center">
					<div>Fecha inicio</div>
					<div><input type="text" name="fecha_inicio" size="16" readonly="readonly" value=""/></div>
				</td>
				<td align="center">
					<div>Fecha fin</div>
					<div><input type="text" name="fecha_fin" size="16" readonly="readonly" value=""/></div>
				</td>
				<td align="center">
					<div>Capacidad</div>
					<div><input type="text" name="capacidad" size="11" readonly="readonly" value=""/></div>
				</td>
				<td align="center">
					<div>Seleccionado</div>
					<div><input type="text" name="metros" size="11" readonly="readonly" value=""/></div>
				</td>
				<td valign="bottom"><button name="planificar"><img src="icon/plan.png" alt="" title="Planificar"/> <span>Planificar</span></button></td>
			</tr>
		</table>
                </center>

		<table class="resultados programacion">
			<thead>
				<tr class="titulo orden">
					<th></th>
					<th>Orden</th>
					<th>WO</th>
					<th>Logotipo</th>
					<th>Formato</th>
					<th>Papel</th>
					<th>Manija</th>
					<th>Inicio impresión</th>
					<th>Fin impresión</th>
					<th>Inicio confección</th>
                                        <th>Uteco Default</th>
                                        <th>Uteco Real</th>
					<th>Metros</th>
					<th>Estado</th>
					<th> </th>
				</tr>
			</thead>
                       <%}
                        i++;
                        titulos = true;
                        // Segun si el ciclo esta planificado o no, cambio el color de fondo.
			String clases = "";
			if(ciclo.isPlanificado()) clases += "planificado ";
			if(ciclo.isBloqueado()) clases += "bloqueado ";

			// Imprimo la cabecera del ciclo.
                        if (!mapCiclos.containsKey(ciclo.getNumero())){
                            String nombre = "<strong>Ciclo " + ciclo.getNumero() + "</strong> - Fechas: "+ciclo.getFechaInicioToString()+" - "+ciclo.getFechaFinToString();
                            %>
						
                            <tbody>
				<tr class="ciclo <%= clases %>">
					<td colspan="<%= 14 %>"><%= nombre %></td>
                                        <%if(CicloUteco.tienePendientes(ciclo.getNumero(), primerDia, ultimoDia)) { %>
                                        <td><input type="checkbox" class="checkbox_cu"
							   name="cu_<%= ciclo.getId() %>"
                                                           value="<%= ciclo.getId() %>"
                                                           data-fechaInicio="<%= ciclo.getFechaHoraInicioToString() %>"
							   data-fechaFin="<%= ciclo.getFechaHoraFinToString() %>"
							   data-capacidad="<%= ciclo.getCapacidad() %>"
                                                           data-numero="<%= ciclo.getNumero() %>"
                                                           data-bloqueado="<%= ciclo.isBloqueado() %>"/></td>
                                        <%}%>
				</tr>
			<%
                           mapCiclos.put(ciclo.getNumero(), nombre);
                        }
                        %>
                     
			<%
                        List<OrdenTrabajo> ordenes = OrdenTrabajo.listarCicloUtecoByNumero(ciclo, confeccion);
                        
                               for(int o=0,m=ordenes.size(); o<m; o++){
                                    OrdenTrabajo ot = ordenes.get(o);
                                    if (!mapOrdenTrabajo.containsKey(ot.getIdentificador())
                                            && (((ot.getCicloNewlongInicio().getTime() >= primerDia.getTime())
                                              && (ultimoDia.getTime() >= ot.getCicloNewlongInicio().getTime())
                                              && (ot.getCicloNewlong().getNewlong().getPais().getId() == 1)) ||
                                                ((ot.getCicloNewlongInicio().getTime() >= primerDia.getTime() + 86400000*7)
                                              && (ultimoDia.getTime() + 86400000*7 >= ot.getCicloNewlongInicio().getTime())
                                              && (ot.getCicloNewlong().getNewlong().getPais().getId() == 2)))){
                                        ordenesTotales.add(ot);
                                        mapOrdenTrabajo.put(ot.getIdentificador(), ot);
                                    }
                               }
                         // }
                      //  }
                    Collections.sort(ordenesTotales, new ComparatorFechaInicioUteco());
			for(int o=0,m=ordenesTotales.size(); o<m; o++)
				{
				OrdenTrabajo ot = ordenesTotales.get(o);
                               // if (ot.getSemanaNewlong(cicloNewlong.getFechaHoraInicio()) == semana){

                                // Agrego el id de la orden a las lista de id's.
                                
				
				idsOrdenes += ot.getId() + ",";

				// Agrego el id de la orden a las lista de id's planificados.
				if(ot.getCicloUteco().isPlanificado())
					{
                                          idsPlanificados += ot.getId() + ",";
					}

				String clase = "";
                                if (ot.getUtecoDefault() == 0){
                                    ot.setUtecoDefault(ot.getCicloUteco().getUteco().getId());
                                }
				if(ot.getEstadoId() == EstadoTrabajo.PENDIENTE) clase = "pendiente";
				if(ot.getEstadoId() == EstadoTrabajo.IMPRESO) clase = "impreso";
				if(ot.getEstadoId() == EstadoTrabajo.CONFECCIONADO) clase = "confeccionado";
				if(!ot.validarEstados()) clase += " advertencia";
				%>
				<tr class="orden <%= clase %>">
					<td>
						<% if(ot.getEstadoId() <= EstadoTrabajo.CONFECCIONADO || ot.getCicloUteco().isBloqueado()) { %>
						<a href="ordenes-trabajo-edit.jsp?id=<%= ot.getId() %>" class="reprogramar" title="Reprogramar"
						   data-id="<%= ot.getId() %>"
						   data-cicloId="<%= ot.getCicloUtecoId() %>"
						   data-info="<%= ot.getCicloUteco().getUteco().getDescripcion() + " - Ciclo " + ot.getCicloUteco().getNumero() %>"><img src="icon/config.png" alt="Editar"/></a>
						<% } %>
					</td>
					<td><%= ot.getCicloUtecoTurno() %></td>
					<td><%= ot.getIdentificador() %></td>
					<td><%= ot.getOrdenVenta().getLogotipo() %></td>
					<td><%= ot.getFormato() %></td>
					<td><%= ot.getOrdenVenta().getTipoPapel() %></td>
					<td><%= ot.getOrdenVenta().getManija() %></td>
					<td><%= ot.getCicloUtecoInicioToString() %></td>
					<td><%= ot.getCicloUtecoFinToString() %></td>
					<%if (ot.getCicloNewlong() != null ){%>
                                            <td><%= Util.format(ot.getCicloNewlongInicio(), "dd/MM/yyyy") %></td>
					<%} else{%> <td></td> <%}%>
                                        <td><%= ot.getUtecoDefault() %></td>
                                        <td><input type="text" name ="act_uteco_<%= ot.getId() %>"  class="act_uteco"  size="2" value="<%= ot.getCicloUteco().getUteco().getId() %>"
                                                   />
                                            <input type ="button" name="Cambiar" title="Actualizar" class="actualizar_id"
                                                                   id ="actualizar_id"
                                                                   value="Cambiar"
                                                                   ot-id="<%= ot.getId() %>"
                                                                   uteco-id ="<%= ot.getCicloUteco().getUteco().getId() %>"
								   data-identificador="<%= ot.getIdentificador() %>"
								   data-metros="<%= ot.getMetros() %>"
								   data-tipoPapel="<%= ot.getOrdenVenta().getTipoPapel() %>"
								   data-manija="<%= ot.getOrdenVenta().getManija() %>"
								   data-cantidadColores="<%= ot.getOrdenVenta().getCantidadColores() %>"
								   data-lacaUv="<%= ot.getOrdenVenta().getLacaUv() %>"
								   data-barniz="<%= ot.getOrdenVenta().isBarniz() %>"
								   data-formato="<%= ot.getFormato() %>"
								   data-logotipo="<%= ot.getOrdenVenta().getLogotipo() %>"
								   data-cicloId="<%= ot.getCicloUtecoId() %>"
                                                                   data-orden-venta="<%= ot.getOrdenVenta().getId() %>"
                                                                   fecha-confeccion="<%= ot.getCicloNewlongInicio() %>"
                                                                   uteco-default="<%= ot.getUtecoDefault()%>"
                                                                   cicloActual="<%="Si"%>"/>
                                        </td>
					<td><%= Util.numero.format(ot.getMetros()) %></td>
                                        <td align="center">
						<%= Html.getIconoEstadoOrden(ot.getEstadoImpresion()) %>
						<%= Html.getIconoEstadoOrden(ot.getEstadoConfeccion()) %>
					</td>
					<td id ="hola">
						<%
						if(!ot.getCicloUteco().isPlanificado())
							{
							String info =  "Metros: " + ot.getMetros() + " - " + ot.getFormato() + " - " + ot.getOrdenVenta().getTipoPapel() + " - " + ot.getOrdenVenta().getManija() + " - Colores: " + ot.getOrdenVenta().getCantidadColores();
							%>
							<input type="checkbox" class="checkbox_ot"
                                                                   id ="checkbox_ot"
								   name="ot_<%= ot.getId() %>"
								   value="<%= ot.getId() %>"
                                                                   ot-id="<%= ot.getId() %>"
								   data-identificador="<%= ot.getIdentificador() %>"
								   data-metros="<%= ot.getMetros() %>"
								   data-tipoPapel="<%= ot.getOrdenVenta().getTipoPapel() %>"
								   data-manija="<%= ot.getOrdenVenta().getManija() %>"
								   data-cantidadColores="<%= ot.getOrdenVenta().getCantidadColores() %>"
								   data-lacaUv="<%= ot.getOrdenVenta().getLacaUv() %>"
								   data-barniz="<%= ot.getOrdenVenta().isBarniz() %>"
								   data-formato="<%= ot.getFormato() %>"
								   data-logotipo="<%= ot.getOrdenVenta().getLogotipo() %>"
								   data-cicloId="<%= ot.getCicloUtecoId() %>"
                                                                   data-cicloNumero="<%= ot.getCicloUteco().getNumero() %>"
                                                                   fecha-confeccion="<%= ot.getCicloNewlongInicio() %>"
                                                                   data-orden-venta="<%= ot.getOrdenVenta().getId() %>"
                                                                   uteco-default="<%= ot.getUtecoDefault()%>"
                                                                   uteco-id="<%= ot.getCicloUteco().getUtecoId() %>"
								   data-info="<%= info %>"/>
							<% }
						%>
					</td>
                                     
				</tr>
				<%

				//}
                              }
			%></tbody><%
		
                    }
                   }
		%>
                 </table>
                 </form>
                 </td>
		<%

} %>
<%
                List<CicloUteco> ciclosUteco = CicloUteco.getCicloUtecoByFechaConfeccion(fecha1, confeccion);
                Map<Integer, CicloUteco> mapCiclosPadres = new HashMap<Integer,CicloUteco>();
                for (CicloUteco c : ciclosUteco){
                    mapCiclosPadres.put(c.getNumero(), c);
                }
                List<CicloUteco> ciclos = new ArrayList<CicloUteco>();
                Map<Integer, CicloUteco> mapCiclosProcesados = new HashMap<Integer, CicloUteco>();
                Map<Integer, OrdenTrabajo> mapOtParientes = new HashMap<Integer, OrdenTrabajo>();
                Map<Integer, CicloUteco> mapCicloNumero = new HashMap<Integer,CicloUteco>();
                Map<Integer, Boolean> tienePendientes = new HashMap<Integer, Boolean>();
                 for (CicloUteco ciclo : ciclosUteco){
                if ( ciclo.getId() != 0){
                    List<OrdenTrabajo> listOt = OrdenTrabajo.listarCicloUteco(ciclo.getNumero());
                     for(int o=0,n= listOt.size(); o<n; o++)
                    {
                        OrdenTrabajo ordenTrabajo = listOt.get(o);
                         if ((((ordenTrabajo.getCicloNewlongInicio().getTime() >= primerDia.getTime())
                                              && (ultimoDia.getTime() >= ordenTrabajo.getCicloNewlongInicio().getTime())
                                              && (ordenTrabajo.getCicloNewlong().getNewlong().getPais().getId() == 1)) ||
                                                ((ordenTrabajo.getCicloNewlongInicio().getTime() >= primerDia.getTime() + 86400000*7)
                                              && (ultimoDia.getTime() + 86400000*7 >= ordenTrabajo.getCicloNewlongInicio().getTime())
                                              && (ordenTrabajo.getCicloNewlong().getNewlong().getPais().getId() == 2)))){
                                for(int x=0,y= ordenTrabajo.getOrdenVenta().getOrdenesTrabajo().size(); x<y; x++)
                                    {
                                    OrdenTrabajo pariente = ordenTrabajo.getOrdenVenta().getOrdenesTrabajo().get(x);
                                    if (!mapCiclosProcesados.containsKey(pariente.getCicloUteco().getId())
                                            && pariente.getCicloUteco().getNumero() != ciclo.getNumero()
                                            && !mapCiclosPadres.containsKey(pariente.getCicloUteco().getNumero())
                                            && pariente.getEstado().getId() != EstadoTrabajo.IMPRESO ){
                                            ciclos.add(pariente.getCicloUteco());
                                           
                                            mapCiclosProcesados.put(pariente.getCicloUteco().getId(), pariente.getCicloUteco());
                                    }
                                     if (!tienePendientes.containsKey(pariente.getCicloUteco().getNumero())){
                                            tienePendientes.put(pariente.getCicloUteco().getNumero(), false);
                                         }
                                     if(pariente.getEstado().getId() == EstadoTrabajo.PENDIENTE && !pariente.getCicloUteco().isPlanificado()){
                                            tienePendientes.put(pariente.getCicloUteco().getNumero(), true);
                                      }
                                        if (!mapOtParientes.containsKey(pariente.getId()) && pariente.getEstado().getId() != EstadoTrabajo.IMPRESO){
                                            mapOtParientes.put(pariente.getId(), pariente);
                                    }
                                 }
                          }
                         }
                       }
                     }
                       Collections.sort(ciclos, new ComparatorNumeroCiclo());
                       Map<Integer,String> mapCiclos = new HashMap<Integer,String>();
                        boolean titulos = false;
                        if  (ciclos.size() > 0){
                        for(int c=0,n=ciclos.size(); c<n; c++)
			{
                            CicloUteco cu = ciclos.get(c);
                            if (!mapCicloNumero.containsKey(cu.getNumero())){
                        %>
                        <td valign="top">
                        <form action="" method="post" class="uteco" id="form_uteco_<%= cu.getId() %>">
                        <input type="hidden"  name="uteco" value="<%= cu.getId() %>"/>
                        <input type="hidden"  name="ot-id" value=""/>
                        <input type="hidden"  name="uteco-default" value=""/>
                        <input type="hidden" name="accion_bis" value="CambiarPariente"/>
                        <input type="hidden"  name="respuesta" value=""/>
                        <input type="hidden"  name="cicloActual" value="No"/>
			<%
                         if (titulos == false){
                    %>
                    <center>
                    <table class="planificacion">
                        <tr>
				<td align="center">
					<div>Fecha inicio</div>
					<div><input type="text" name="fecha_inicio" size="16" readonly="readonly" value=""/></div>
				</td>
				<td align="center">
					<div>Fecha fin</div>
					<div><input type="text" name="fecha_fin" size="16" readonly="readonly" value=""/></div>
				</td>
				<td align="center">
					<div>Capacidad</div>
					<div><input type="text" name="capacidad" size="11" readonly="readonly" value=""/></div>
				</td>
				<td align="center">
					<div>Seleccionado</div>
					<div><input type="text" name="metros" size="11" readonly="readonly" value=""/></div>
				</td>
				<td valign="bottom"><button name="planificar"><img src="icon/plan.png" alt="" title="Planificar"/> <span>Planificar</span></button></td>
			</tr>
		</table>
                </center>
		<table id ="resultadosProgramacion" class="resultados programacion">
			<thead>
				<tr class="titulo orden">
					<th></th>
					<th>Orden</th>
					<th>WO</th>
					<th>Logotipo</th>
					<th>Formato</th>
					<th>Papel</th>
					<th>Manija</th>
					<th>Inicio impresión</th>
					<th>Fin impresión</th>
					<th>Inicio confección</th>
                                        <th>Uteco Default</th>
                                        <th>Uteco Real</th>
					<th>Metros</th>
					<th>Estado</th>
					<th></th>
				</tr>
			</thead>
                       <%}
                        titulos = true;
                         String clases = "";
			if(cu.isPlanificado()) clases += "planificado ";
			if(cu.isBloqueado()) clases += "bloqueado ";

			// Imprimo la cabecera del ciclo.
                        if (!mapCiclos.containsKey(cu.getNumero())){
                            String nombre = "<strong>Ciclo " + cu.getNumero() + "</strong> - Fechas: "+cu.getFechaInicioToString()+" - "+cu.getFechaFinToString();
                             %>
                      
			<tbody>
                                <tr class="ciclo <%= clases %>">
					<td colspan="<%= 14 %>"><%= nombre %></td>
                                        <%if(tienePendientes.get(cu.getNumero()) == true ) { %>
                                        <td><input type="checkbox" class="checkbox_cu"
							   name="cu_<%= cu.getId() %>"
                                                           value="<%= cu.getId() %>"
                                                           data-fechaInicio="<%= cu.getFechaHoraInicioToString() %>"
							   data-fechaFin="<%= cu.getFechaHoraFinToString() %>"
							   data-capacidad="<%= cu.getCapacidad() %>"
                                                           data-numero="<%= cu.getNumero() %>"
                                                           data-bloqueado="<%= cu.isBloqueado() %>"/></td>
                                        <%}%>
				</tr>
			  <%
                           mapCiclos.put(cu.getNumero(), nombre);
                           }
                         mapCicloNumero.put(cu.getNumero(),cu);
                        List<OrdenTrabajo> ordenes = OrdenTrabajo.listarCicloUtecoByNumero(cu, confeccion);
                        Collections.sort(ordenes, new ComparatorFechaInicioUteco());
			for(int o=0,m=ordenes.size(); o<m; o++)
				{
				OrdenTrabajo ot = ordenes.get(o);
                                if (mapOtParientes.containsKey(ot.getId())){
				// Agrego el id de la orden a las lista de id's.
			
				idsParientes += ot.getId() + ",";

				// Agrego el id de la orden a las lista de id's planificados.
				if(ot.getCicloUteco().isPlanificado())
					{
					
					idsParientesPlanificados += ot.getId() + ",";
					}


				String clase = "";
                                if (ot.getUtecoDefault() == 0){
                                    ot.setUtecoDefault(ot.getCicloUteco().getUteco().getId());
                                }
				if(ot.getEstadoId() == EstadoTrabajo.PENDIENTE) clase = "pendiente";
				if(ot.getEstadoId() == EstadoTrabajo.IMPRESO) clase = "impreso";
				if(ot.getEstadoId() == EstadoTrabajo.CONFECCIONADO) clase = "confeccionado";
				if(!ot.validarEstados()) clase += " advertencia";
				%>
				<tr class="orden <%= clase %>">
					<td>
						<% if(ot.getEstadoId() <= EstadoTrabajo.CONFECCIONADO || cu.isBloqueado()) { %>
						<a href="ordenes-trabajo-edit.jsp?id=<%= ot.getId() %>" class="reprogramar" title="Reprogramar"
						   data-id="<%= ot.getId() %>"
						   data-cicloId="<%= ot.getCicloUtecoId() %>"
                                                   data-orden-venta="<%= ot.getOrdenVenta().getId() %>"
						   data-info="<%= ot.getCicloUteco().getUteco().getDescripcion() + " - Ciclo " + ot.getCicloUteco().getNumero() %>"><img src="icon/config.png" alt="Editar"/></a>
						<% } %>
					</td>
					<td><%= ot.getCicloUtecoTurno() %></td>
					<td><%= ot.getIdentificador() %></td>
					<td><%= ot.getOrdenVenta().getLogotipo() %></td>
					<td><%= ot.getFormato() %></td>
					<td><%= ot.getOrdenVenta().getTipoPapel() %></td>
					<td><%= ot.getOrdenVenta().getManija() %></td>
					<td><%= ot.getCicloUtecoInicioToString() %></td>
					<td><%= ot.getCicloUtecoFinToString() %></td>
                                        <%if (ot.getCicloNewlong() != null ){%>
                                            <td><%= Util.format(ot.getCicloNewlongInicio(), "dd/MM/yyyy") %></td>
					<%} else{%> <td></td> <%}%>
                                        <td><%= ot.getUtecoDefault() %></td>
                                            <td><input type="text" name ="act_uteco_<%= ot.getId() %>" class="act_uteco"  size="2" value="<%= ot.getCicloUteco().getUteco().getId() %>"
                                                       />
                                            <input type ="button" name="cambiar" class="actualizar_id"
                                                                   uteco-id ="<%= ot.getCicloUteco().getUteco().getId() %>"
								   name="ot_<%= ot.getId() %>"
                                                                   ot-id="<%= ot.getId() %>"
								   value="Cambiar"
								   data-identificador="<%= ot.getIdentificador() %>"
								   data-metros="<%= ot.getMetros() %>"
								   data-tipoPapel="<%= ot.getOrdenVenta().getTipoPapel() %>"
								   data-manija="<%= ot.getOrdenVenta().getManija() %>"
								   data-cantidadColores="<%= ot.getOrdenVenta().getCantidadColores() %>"
								   data-lacaUv="<%= ot.getOrdenVenta().getLacaUv() %>"
								   data-barniz="<%= ot.getOrdenVenta().isBarniz() %>"
								   data-formato="<%= ot.getFormato() %>"
								   data-logotipo="<%= ot.getOrdenVenta().getLogotipo() %>"
								   data-cicloId="<%= ot.getCicloUtecoId() %>"
                                                                   fecha-confeccion="<%= ot.getCicloNewlongInicio() %>"
                                                                   uteco-default="<%= ot.getUtecoDefault()%>"
                                                                   data-orden-venta="<%= ot.getOrdenVenta().getId() %>"
                                                                   cicloActual="<%="No"%>"/>
				        </td>
                                        <td><%= Util.numero.format(ot.getMetros()) %></td>
                                        <td align="center">
						<%= Html.getIconoEstadoOrden(ot.getEstadoImpresion()) %>
						<%= Html.getIconoEstadoOrden(ot.getEstadoConfeccion()) %>
					</td>
					<td>
						<%
						if(!ot.getCicloUteco().isPlanificado())
							{
							String info =  "Metros: " + ot.getMetros() + " - " + ot.getFormato() + " - " + ot.getOrdenVenta().getTipoPapel() + " - " + ot.getOrdenVenta().getManija() + " - Colores: " + ot.getOrdenVenta().getCantidadColores();
							%>
							<input type="checkbox" class="checkbox_ot"
								   name="checkbox_ot_<%= ot.getId() %>"
								   value="<%= ot.getId() %>"
								   data-identificador="<%= ot.getIdentificador() %>"
								   data-metros="<%= ot.getMetros() %>"
								   data-tipoPapel="<%= ot.getOrdenVenta().getTipoPapel() %>"
								   data-manija="<%= ot.getOrdenVenta().getManija() %>"
								   data-cantidadColores="<%= ot.getOrdenVenta().getCantidadColores() %>"
								   data-lacaUv="<%= ot.getOrdenVenta().getLacaUv() %>"
								   data-barniz="<%= ot.getOrdenVenta().isBarniz() %>"
								   data-formato="<%= ot.getFormato() %>"
								   data-logotipo="<%= ot.getOrdenVenta().getLogotipo() %>"
								   data-cicloId="<%= ot.getCicloUtecoId() %>"
                                                                   data-orden-venta="<%= ot.getOrdenVenta().getId() %>"
                                                                   uteco-default="<%= ot.getUtecoDefault()%>"
                                                                   data-cicloNumero="<%= ot.getCicloUteco().getNumero() %>"
                                                                   uteco-id="<%= ot.getCicloUteco().getUtecoId() %>"
                                                                   data-info="<%= info %>"/>

							<% }
						%>
					</td>
				</tr>
				<%
                                }
                            }
                          
			%></tbody><%

                       }
                     }
                   
                        %>
                         </table>
                 </form>
                 </td>
                 <% }else{%>
                 <td style="vertical-align: top">
                          <center>
                    <table class="planificacion">
                        <tr>
				<td align="center">
					<div>Fecha inicio</div>
					<div><input type="text" name="fecha_inicio" size="16" readonly="readonly" value=""/></div>
				</td>
				<td align="center">
					<div>Fecha fin</div>
					<div><input type="text" name="fecha_fin" size="16" readonly="readonly" value=""/></div>
				</td>
				<td align="center">
					<div>Capacidad</div>
					<div><input type="text" name="capacidad" size="11" readonly="readonly" value=""/></div>
				</td>
				<td align="center">
					<div>Seleccionado</div>
					<div><input type="text" name="metros" size="11" readonly="readonly" value=""/></div>
				</td>
				<td valign="bottom"><button name="planificar"><img src="icon/plan.png" alt="" title="Planificar"/> <span>Planificar</span></button></td>
			</tr>
		</table>
                </center>
		<table class="resultados programacion">
			<thead>
				<tr class="titulo orden">
					<th></th>
					<th>Orden</th>
					<th>WO</th>
					<th>Logotipo</th>
					<th>Formato</th>
					<th>Papel</th>
					<th>Manija</th>
					<th>Inicio impresión</th>
					<th>Fin impresión</th>
					<th>Inicio confección</th>
                                        <th>Uteco Default</th>
                                        <th>Uteco Real</th>
					<th>Metros</th>
					<th>Estado</th>
					<th></th>
				</tr>
			</thead>
                </table>
                </td>

               <%}%>

 </tr>
</table></center>

</div>

<!-- Formulario para dar de alta planificaciones -->
<div id="div_planificacion">
	<form action="" method="post" id="form_planificacion">
		<input type="hidden" name="accion_bis" value="planificar"/>
		<input type="hidden" name="ciclo_id" value=""/>
		<input type="hidden" name="uteco" value=""/>
		<input type="hidden" name="ids" value=""/>

		<center><table class="formulario">
			<tr>
				<td class="label">Fecha de inicio</td>
				<td class="input"><input type="text" name="fecha_inicio" value="" readonly="readonly" /></td>
			</tr>
			<tr>
				<td class="label">Fecha de fin</td>
				<td class="input"><input type="text" name="fecha_fin" value="" readonly="readonly" /></td>
			</tr>
			<tr>
				<td class="label">Bloquear</td>
				<td class="input">
					<input type="checkbox" name="bloqueado" value="true"/>
					(si se bloquea la planificación, no se podrán agregar más ordenes a ella)
				</td>
			</tr>
			<tr>
				<td class="label">Capacidad entre las fechas</td>
				<td class="input"><input type="text" name="capacidad" value="" readonly="readonly"/></td>
			</tr>
			<tr>
				<td class="label">Metros a imprimir</td>
				<td class="input"><input type="text" name="metros" value="" readonly="readonly"/></td>
			</tr>
			<tr>
				<td class="label">Ordenes</td>
				<td id="td_planificacion_ordenes"></td>
			</tr>
			<tr>
				<td align="left"><button name="cancelar"><img src="icon/stop.png" alt="" title="Cancelar"/> <span>Cancelar</span></button></td>
				<td align="right"><button name="guardar"><img src="icon/save.png" alt="" title="Planificar"/> <span>Planificar</span></button></td>
			</tr>
		</table></center>
	</form>
</div>



<!-- Formulario para reprogramar pedidos -->
<div id="div_reprogramacion" title="Reprogramar orden de trabajo">
	<form action="" method="post" id="form_reprogramacion">
		<input type="hidden" name="accion_bis" value="reprogramar"/>
		<input type="hidden" name="orden_id" value=""/>

		<table class="formulario" style="width:100%;">
			<tr>
				<td class="label">Ciclo actual</td>
				<td class="input"><input type="text" name="ciclo_actual" value="" readonly="readonly"/></td>
			</tr>
			<tr>
				<td class="label">Ciclos posibles</td>
				<td class="input" id="td_reprogramacion_ciclos"></td>
			</tr>
			<tr>
				<td align="left"><button name="cancelar"><img src="icon/stop.png" alt="" title="Cancelar"/> <span>Cancelar</span></button></td>
				<td align="right"><button name="guardar"><img src="icon/save.png" alt="" title="Reprogramar"/> <span>Reprogramar</span></button></td>
			</tr>
		</table>
	</form>
</div>





<!-- Formulario para invocar al Servlet que crea el Excel -->
<form action="Excel" method="post" id="form_excel">
	<input type="hidden" name="tipo" value="programacion"/>
	<input type="hidden" name="idsOrdenes" value="<%= idsOrdenes %>"/>
	<input type="hidden" name="ids_planificados" value="<%= idsPlanificados %>"/>
        <input type="hidden" name="idsParientes" value="<%= idsParientes %>"/>
        <input type="hidden" name="idsParientesPlanificados" value="<%= idsParientesPlanificados %>"/>
        <input type="hidden" name="planificados" value="No"/>
</form>



<form action="Excel" method="post" id="form_cascada">
   <input type="hidden" name="tipo" value="scada"/>
    <input type="hidden" name="ids" value="<%= ids %>"/>
</form>

<div id="div_excel_confirmacion" title="Exportación a Excel">
	¿Desea exportar todos los ciclos o solo aquellos que se encuentran planificados?
</div>

<div id="div_informacion" title="Información" >
    <form action="information" method="post" id="form_information" >
            <center><table  >
            <tr>
                <td><input <input type="text" name="texto" size="100" readonly="readonly" value="" style="font-family: Arial; font-size: 16px;" /></td>
            </tr>
                </table></center>

</form>
</div>


<%@ include file="jspf/footer.jspf" %>

</body>
</html>

